In a wireless communication system, a source device encodes input data, modulates the encoded data, and transmits a corresponding signal over a channel to a destination device. When a high-quality channel is present between the source device and the destination device, the signal may be received with few or no errors. However, when a low-quality channel is present, a significant quantity of errors may be introduced into the signal prior to its reception by the destination device. Error measurements may be quantified in terms of bit error rates or block error rates.
Some encoding techniques enable a destination device to detect errors in a received signal. For example, some encoding techniques add redundancy bits to the input data, prior to transmission. In order to detect errors, the destination device may evaluate the redundancy bits in light of the other received data. However, encoding techniques that merely add redundancy bits may not enable a decoder to correct the detected errors. Accordingly, when the bit error rate or block error rate is relatively high, communication quality may suffer. These conditions may be present in a noisy or lossy channel.
Other encoding techniques enable a destination device not only to detect errors, but also to correct some or all errors. For example, some encoding techniques use convolutional encoding to encode the input data. When convolutional encoding is applied, a destination device may use a search algorithm (e.g., a Viterbi algorithm) to find the most likely values for the received data. Although convolutional encoding may enable more robust communications, it comes at the expense of decreasing useful data transfer rates. In addition, some search algorithms are computationally costly. Accordingly, efficient data encoding and/or decoding techniques are sought, which enable robust error detection and correction to be performed, while preferably achieving relatively high useful data transfer rates.